package com.partsoft.dits.integrate;

import com.partsoft.dits.DataEdgeDescriptor;
import com.partsoft.dits.DataIntegrateBatch;
import com.partsoft.dits.DataIntegrateProcessor;
import com.partsoft.dits.message.MessageEntity;

/**
 * 集成引擎 
 * TODO 需要重新考虑
 */
public interface IntegrateReactor extends DataIntegrateProcessor {

	/**
	 * 是否支持某数据描述符
	 * @param descriptorClazz 类型
	 * @return 返回true表示此处理器支持此数据描述符处理。
	 */
	boolean supportData(Class<? extends DataEdgeDescriptor> descriptorClazz);
	
	/**
	 * 是否支持某数据描述符
	 * @param dataDescriptor 描述
	 * @return 返回true表示此处理支持。
	 */
	boolean supportData(DataEdgeDescriptor dataDescriptor);
	
	/**
	 * 处理任务
	 * @param batch 参见{@link DataIntegrateBatch}。
	 */
	void process(DataIntegrateBatch batch);
	
	/**
	 * 处理消息
	 * @param msgEntity消息句柄
	 */
	void process(DataEdgeDescriptor dataDescriptor, MessageEntity msgEntity);

	
}
